package cn.iocoder.yudao.module.digital.dal.dataobject.projects;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import org.apache.ibatis.type.JdbcType;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 项目 DO
 *
 * @author cxl
 */
@TableName(value = "digital_projects", autoResultMap = true)
@KeySequence("digital_projects_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProjectsDO extends BaseDO {

    /**
     * id
     */
    @TableId
    private Integer id;
    /**
     * 项目名字
     */
    private String name;
    /**
     * 项目类型
     *
     * 枚举
     */
    private Integer type;
    /**
     * 主办方（字典）
     *
     * 枚举
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer organizer;
    /**
     * 主办方（不在字典里面）
     */
    private String organizerOther;
    /**
     * 级别（省级，国家级，校级）
     *
     * 枚举
     */
    private Integer level;
    /**
     * 第一作者，负责人
     */
    private String author;
    /**
     * 成员
     */
    private String member;
    /**
     * 贡献率数组，0号元素是负责人，后面的是成员
     */
    private String rate;
    /**
     * 立项时间
     */
    private LocalDateTime projectStartTime;
    /**
     * 结项时间
     */
    private LocalDateTime projectEndTime;
    /**
     * 状态
     *
     * 枚举
     */
    private Integer status;
    /**
     * 佐证地址
     */
    @TableField(value = "evidence_url", typeHandler = JacksonTypeHandler.class)
    private List<String> evidenceUrl;
    /**
     * 备注
     */
    private String remark;
    /**
     * 保留字段
     */
    private String reserved1;
    /**
     * 保留字段
     */
    private String reserved2;
    /**
     * 保留字段
     */
    private String reserved3;
    /**
     * 保留字段
     */
    private String reserved4;
    /**
     * 保留字段
     */
    private String reserved5;

}